home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / Tools / Development / TinyGL / ami / content / ad709 / tinygl / src / asminterface.asm < prev    next >
Encoding:
Assembly Source File  |  2002-08-20  |  4.7 KB  |  214 lines

  1. .include 'tao'
  2. .include 'ad709/tinygl/gl'
  3.  
  4. .define RTLD_NOW 2
  5. .define RTLD_GLOBAL    $100
  6. .define NUM_GL_FUNCS 79
  7. .define NUM_GLUT_FUNCS 24
  8. .define NUM_GLU_FUNCS 2
  9.  
  10.  
  11. tool 'ami/lib/ad709/tinygl/deinit', VP
  12. ent (pointer glFuncs, pointer libHandle : -)
  13.     qcall lang/cc/bin/dynamic/dlclose, (libHandle : i~)
  14.     qcall lib/free, (glFuncs : -)
  15.     ret ()
  16. entend
  17. toolend
  18.  
  19.  
  20.  
  21. tool 'ami/lib/ad709/tinygl/init',VP
  22. ent (int whichLib : pointer[], pointer)
  23.     regdef pointer libHandle
  24.     regdef pointer [funcsTable]
  25.     regdef pointer funcsPtr
  26.     regdef pointer currentFunc
  27.     regdef pointer names
  28.     regdef pointer err
  29.     regdef pointer __stderr
  30.     regdef pointer lib
  31.     regdef int i
  32.     regdef int nameLength
  33.     regdef int numFunctions
  34.  
  35.     stderr __stderr
  36.  
  37.     if whichLib == GL_LIB
  38.         cpy.p gl_lib_name, lib
  39.         cpy NUM_GL_FUNCS, numFunctions
  40.         cpy.p gl_function_names, names
  41.     elseif whichLib == GLUT_LIB
  42.         cpy.p glut_lib_name, lib
  43.         cpy NUM_GLUT_FUNCS, numFunctions
  44.         cpy.p glut_function_names, names
  45.     elseif whichLib == GLU_LIB
  46.         cpy.p glu_lib_name, lib
  47.         cpy NUM_GLU_FUNCS, numFunctions
  48.         cpy.p glu_function_names, names
  49.     else
  50.         fprintf __stderr, "Incorrect library binding request\n"
  51.         ret (NULL, NULL)
  52.     endif
  53.  
  54.     qcall lang/cc/bin/dynamic/dlopen, (lib, RTLD_NOW + RTLD_GLOBAL : libHandle)
  55.     if libHandle == 0
  56.         qcall lang/cc/bin/dynamic/dlerror, (- : err)
  57.         fprintf __stderr, "%s\n", err
  58.         ret (NULL, NULL)
  59.     endif
  60.     
  61.     qcall lib/malloc, (4*numFunctions : funcsTable)
  62.     if.p funcsTable == NULL
  63.         fprintf __stderr, "Not enough memory for TinyGL function table.\n"
  64.     endif
  65.  
  66.     cpy.p funcsTable, funcsPtr
  67.     clr i
  68.     repeat
  69.         qcall lang/cc/bin/dynamic/dlsym, (libHandle, names : currentFunc)
  70.         qcall lang/cc/bin/dynamic/dlerror, (- : err)
  71.         if err != 0
  72.             fprintf __stderr, "%s : %s %s\n", err, names, lib
  73.             ret (NULL, NULL)
  74.         endif
  75.         cpy.p currentFunc, [funcsTable]
  76.         add 4, currentFunc
  77.         add 4, funcsTable
  78.         qcall lib/strlen, (names : nameLength)
  79.         add nameLength+1, names
  80.         inc i
  81.     until i == numFunctions    
  82.     cpy.p funcsPtr, funcsTable
  83.  
  84.     ret (funcsTable, libHandle)
  85. entend
  86.  
  87. data
  88.  
  89. gl_lib_name:
  90.     dc.b 'ami/lang/cc/lib/ad709/libTinyGL.so', 0
  91.  
  92. glut_lib_name:
  93.     dc.b 'ami/lang/cc/lib/ad709/libTinyGLUT.so', 0
  94.  
  95. glu_lib_name:
  96.     dc.b 'ami/lang/cc/lib/ad709/libTinyGLU.so', 0
  97.  
  98.  
  99. gl_function_names:
  100.     dc.b 'glEnable',0
  101.     dc.b 'glDisable',0
  102.     dc.b 'glShadeModel',0
  103.     dc.b 'glCullFace',0
  104.     dc.b 'glPolygonMode',0
  105.     dc.b 'glBegin',0
  106.     dc.b 'glEnd',0
  107.     dc.b 'glVertex2f',0
  108.     dc.b 'glTexCoord2f',0
  109.     dc.b 'glTexCoord2fv',0
  110.     dc.b 'glVertex3f',0
  111.     dc.b 'glVertex3fv',0
  112.     dc.b 'glColor3f',0
  113.     dc.b 'glColor3fv',0
  114.     dc.b 'glNormal3f',0
  115.     dc.b 'glNormal3fv',0
  116.     dc.b 'glVertex4f',0
  117.     dc.b 'glColor4f',0
  118.     dc.b 'glColor4fv',0
  119.     dc.b 'glTexCoord4f',0
  120.     dc.b 'glEdgeFlag',0
  121.     dc.b 'glMatrixMode',0
  122.     dc.b 'glLoadMatrixf',0
  123.     dc.b 'glLoadIdentity',0
  124.     dc.b 'glMultMatrixf',0
  125.     dc.b 'glPushMatrix',0
  126.     dc.b 'glPopMatrix',0
  127.     dc.b 'glRotatef',0
  128.     dc.b 'glTranslatef',0
  129.     dc.b 'glScalef',0
  130.     dc.b 'glViewport',0
  131.     dc.b 'glFrustum',0
  132.     dc.b 'glGenLists',0
  133.     dc.b 'glIsList',0
  134.     dc.b 'glNewList',0
  135.     dc.b 'glEndList',0
  136.     dc.b 'glCallList',0
  137.     dc.b 'glClear',0
  138.     dc.b 'glClearColor',0
  139.     dc.b 'glClearDepth',0
  140.     dc.b 'glRenderMode',0
  141.     dc.b 'glSelectBuffer',0
  142.     dc.b 'glInitNames',0
  143.     dc.b 'glPushName',0
  144.     dc.b 'glPopName',0
  145.     dc.b 'glLoadName',0
  146.     dc.b 'glGenTextures',0
  147.     dc.b 'glDeleteTextures',0
  148.     dc.b 'glBindTexture',0
  149.     dc.b 'glTexImage2D',0
  150.     dc.b 'glTexEnvi',0
  151.     dc.b 'glTexParameteri',0
  152.     dc.b 'glPixelStorei',0
  153.     dc.b 'glMaterialfv',0
  154.     dc.b 'glMaterialf',0
  155.     dc.b 'glColorMaterial',0
  156.     dc.b 'glLightfv',0
  157.     dc.b 'glLightf',0
  158.     dc.b 'glLightModeli',0
  159.     dc.b 'glLightModelfv',0
  160.     dc.b 'glFlush',0
  161.     dc.b 'glHint',0
  162.     dc.b 'glGetIntegerv',0
  163.     dc.b 'glGetFloatv',0
  164.     dc.b 'glGetString',0
  165.     dc.b 'glFrontFace',0
  166.     dc.b 'glEnableClientState',0
  167.     dc.b 'glDisableClientState',0
  168.     dc.b 'glArrayElement',0
  169.     dc.b 'glVertexPointer',0
  170.     dc.b 'glColorPointer',0
  171.     dc.b 'glNormalPointer',0
  172.     dc.b 'glTexCoordPointer',0
  173.     dc.b 'glPolygonOffset',0
  174.     dc.b 'iglCreateContext',0
  175.     dc.b 'iglDestroyContext',0
  176.     dc.b 'iglMakeCurrent',0
  177.     dc.b 'iglResizeContext',0
  178.     dc.b 'iglGetPixmap',0
  179.     dc.b 'glBlendFunc',0
  180.  
  181. glut_function_names:
  182.     dc.b 'glutInit',0
  183.     dc.b 'glutInitWindowPosition',0
  184.     dc.b 'glutInitWindowSize',0
  185.     dc.b 'glutCreateWindow',0
  186.     dc.b 'glutFullScreen',0
  187.     dc.b 'glutSetWindow',0
  188.     dc.b 'glutGetWindow',0
  189.     dc.b 'glutDestroyWindow',0
  190.     dc.b 'glutSwapBuffers',0
  191.     dc.b 'glutMainLoop',0
  192.     dc.b 'glutPostRedisplay',0
  193.     dc.b 'glutDisplayFunc',0
  194.     dc.b 'glutReshapeFunc',0
  195.     dc.b 'glutIdleFunc',0
  196.     dc.b 'glutKeyboardFunc',0
  197.     dc.b 'glutMouseFunc',0
  198.     dc.b 'glutMotionFunc',0
  199.     dc.b 'glutPassiveMotionFunc',0
  200.     dc.b 'glutEntryFunc',0
  201.     dc.b 'glutShowWindow',0
  202.     dc.b 'glutHideWindow',0
  203.     dc.b 'glutPositionWindow',0
  204.     dc.b 'glutReshapeWindow',0
  205.     dc.b 'glutGet',0
  206.     dc.b 'glutKeyboardUpFunc',0
  207.     
  208. glu_function_names:
  209.     dc.b 'gluLookAt',0
  210.     dc.b 'gluPerspective',0
  211.  
  212.  
  213. toolend
  214.